\chapter{Научное}
\pagenumbering{arabic}

\section{Научная поисковая система на вашем Linux-десктопе}
Некоторое время назад я писал о SWISH++, и вот теперь мне хотелось бы обобщить написанное в более краткой форме. Проблема поиска нужной статьи, если не помнишь точно где она находится в каталогах, действительно серьёзная.

\subsection{Поиск дубликатов}
Итак, когда я накачал нужных мне статей из Интернета, я прежде всего смотрю, есть ли они у меня в коллекции с помощью fdupes. Эта программа ищет дубликаты файлов:

\begin{lstlisting}
$ fdupes -rd .
\end{lstlisting}


Точка в конце говорит о том, что искать дубликаты fdupes будет, начиная с текущего каталога, поэтому можно в каталоге со статьями сделать подкаталог 1/ и набросать туда скачанные статьи.

Fdupes сравнивает файлы как побайтово, так и с помощью подсчёта md5-суммы, работает невероятно быстро, сортировка производится в полуавтоматическом режиме: программа выводит в консоли дублирующиеся файлы и спрашивает, какой из них оставить. Об этом уже говорилось в статье о подходах к сортировке PDF-файлов.


\subsection{Индексация текста в PDF-файлах}
Сначала из документов pdf вытаскиваем текст, для чего просим утилиту find найти все файлы PDF и для каждого найденного выполнить pdftotext без выдачи предупреждений и без вставки символов разрыва страницы:

\begin{lstlisting}
# find -name '*.pdf' -exec pdftotext -nopgbrk -q {} \;
\end{lstlisting}


Надо отметить, что pdftotext хорошо работает только для английского языка, на котором, в общем, все статьи и написаны.

Теперь индексируем все текстовые файлы - в этом нам поможет собрат SWISH++ по имени index++ для индексации текстовых файлов:

\begin{lstlisting}
# index++ -e "text:*.txt" .
\end{lstlisting}


Точка в конце означает, что поиск ведётся с текущего каталога. Подробнее об индексации и автоматизации этого процесса сказано здесь.

В результате в текущем каталоге появится файл swish++.index где, собственно, лежит информация об индексировани файлов. Теперь всё готово для поиска.


\subsection{Ищем в архиве статей нужное}
Для поиска используем search++ которая найдёт по нашему запросу в индексированной базе swish++.index файлы. Вот пример поиска статьи по математической морфологии, в которых нет упоминания про медицину:

\begin{lstlisting}
$ search++ morphology and erosion and dilation not medicine
\end{lstlisting}



Мгновение спустя вижу результат (вывод сокращён):

\begin{lstlisting}
# results: 125
99 ./Krylov2.txt 3771 Krylov2.txt
49 ./13300407.txt 3103 13300407.txt
46 ./morph1.slides.printing.6.txt 4369 morph1.slides.printing.6.txt
37 ./lecture_morphology_sara.txt 6746 lecture_morphology_sara.txt
30 ./SIGGRAPH2002_Sketch-Mitchell.txt 5308 SIGGRAPH2002_Sketch-Mitchell.txt
26 ./MorphologicalImageProcessing.txt 7642 MorphologicalImageProcessing.txt
25 ./phdsymp2002_ledda.txt 8298 phdsymp2002_ledda.txt
23 ./lab2_manual.txt 9313 lab2_manual.txt
23 ./Project 1.txt 9946 Project 1.txt
22 ./morphology.txt 11212 morphology.txt
22 ./edg/morphology.txt 11212 morphology.txt
22 ./slides-6-geometry.txt 11717 slides-6-geometry.txt
22 ./V1BFOGG8.txt 10797 V1BFOGG8.txt
18 ./71650638.txt 13978 71650638.txt
\end{lstlisting}

Первая колонка - релевантность, вторая - расположение файла относительно текущей директории, третья - размер файла, четвёртая - имя. Просто и понятно.

Теперь в консольке набираю kdpf ./Krylov2.pdf и смотрю нужную мне статью. И всё.




\section{Совместная работа над документами \LaTeX}
Когда вы сидите и тихо работаете над своей задачей - всё хорошо и здорово. Ровно до тех пор, пока не возникнет необходимость в совместной работе над статьёй, отчётом или другим крупным документом в \LaTeX. Особенно этот процесс становится захватывающим при использовании разных кодировок и операционных систем. 

\subsection{Совместная работа над документами \LaTeX}
Для того, чтобы взять под контроль процесс правок при совместной работе, перво-наперво нужно выбрать систему контроля ревизий.

\subsection{Правки и комментарии в документах \LaTeX}
Приведу свои результаты проб и ошибок в деле коллективной работы над латеховскими документами. Вот тут, кстати, начинаешь немного тосковать по Word и OpenOffice.Writer, в которых есть встроенные средства для коллективной работы (правки, исправления, пометки, заметки на полях). Некое подобие этого я реализовал в \LaTeX и с некоторым успехом применял для правок дипломов у своих студентов.

\subsubsection{Дробление документов}
С одним большим документом работать просто невозможно и жутко неудобно - так что главы дипломов, отчётов и крупных монографий лучше разделить на файлы и вставлять директивой \verb|\input|. Это облегчит работу и системе контроля версий при обновлении рабочих копий - чтобы правки были неперекрывающиеся.

\subsubsection{Зачёркивания и пометки цветом}
Чтобы иметь возможность зачеркивать слова в \LaTeX, включаем в преамбуле документа пакет \textbf{ulem}. И далее в тексте для зачёркивания используем команду \verb+\sout{чтобы зачёркивать текст}.+

Альтернатива пакету \textbf{ulem} - пакет \textbf{soul}, где для зачёркивания используется команда \verb+\st{зачеркнуть это}+.
Рядом обычно пишется вопрос или предложение фразы для соавтора - это лучше помечать цветом (при этом лучше сразу договориться, какой цвет выберет каждый соавтор, чтобы потом с ума не сойти). Для выделения цветом в \LaTeX можно использовать пакет \textbf{xcolor}, который подключаем в преамбуле. И далее помечаем в тексте слова \verb+\textcolor{red}{красным шрифтом}+.

\subsubsection{Заметки на полях и комментарии в \LaTeX}
Иногда хочется выразить своё мнение или особо обратить внимания соавтора на что-то - в этом случае стоит использовать заметки на полях. Для этого есть стандартная команда \verb+\marginpar{Замечание соавтору сбоку на полях.}+

Но иногда комментарий длинный или хочется втянуть соавтора в письменную дискуссию - тогда нам придёт на помощь небольшой трюк. Можно определить команду комментирования, и тот текст, который будет в комментарии, не будет виден в откомпилированном документе, но в коде присутствовать будет. Для этого в преамбуле определяем новую команду так: \verb+\newcommand{\comment}[1]{}+
и в тексте можно дать волю своим полемическим способностям \verb+\comment{, потому как этот текст+
\verb+всё равно не будет виден в откомпилированном \LaTeX-документе}.+

Эти в общем-то нехитрые приёмы, часть из которых со временем выветривается из моей просторной головы, помогают поддерживать адекватный уровень совместной работы.

